home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / Install / program files / Borland / BDS / 3.0 / Demos / Delphi.Net / VCL / MDI / MDIEdit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2004-10-22  |  11.8 KB  |  576 lines

  1. unit MDIEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Menus, StdCtrls, ComCtrls;
  8.  
  9. type
  10.   TEditForm = class(TForm)
  11.     MainMenu1: TMainMenu;
  12.     File1: TMenuItem;
  13.     New1: TMenuItem;
  14.     Open1: TMenuItem;
  15.     Save1: TMenuItem;
  16.     Saveas1: TMenuItem;
  17.     Print1: TMenuItem;
  18.     N2: TMenuItem;
  19.     Exit1: TMenuItem;
  20.     Edit1: TMenuItem;
  21.     Cut1: TMenuItem;
  22.     Copy1: TMenuItem;
  23.     Paste1: TMenuItem;
  24.     Delete1: TMenuItem;
  25.     N3: TMenuItem;
  26.     Selectall1: TMenuItem;
  27.     Character1: TMenuItem;
  28.     Left1: TMenuItem;
  29.     Right1: TMenuItem;
  30.     Center1: TMenuItem;
  31.     N4: TMenuItem;
  32.     Wordwrap1: TMenuItem;
  33.     N5: TMenuItem;
  34.     Font1: TMenuItem;
  35.     PopupMenu1: TPopupMenu;
  36.     Cut2: TMenuItem;
  37.     Copy2: TMenuItem;
  38.     Paste2: TMenuItem;
  39.     SaveFileDialog: TSaveDialog;
  40.     FontDialog1: TFontDialog;
  41.     Printersetup1: TMenuItem;
  42.     Close1: TMenuItem;
  43.     PrinterSetupDialog1: TPrinterSetupDialog;
  44.     PrintDialog1: TPrintDialog;
  45.     Editor: TRichEdit;
  46.     procedure Exit1Click(Sender: TObject);
  47.     procedure New1Click(Sender: TObject);
  48.     procedure AlignClick(Sender: TObject);
  49.     procedure Wordwrap1Click(Sender: TObject);
  50.     procedure Cut1Click(Sender: TObject);
  51.     procedure Copy1Click(Sender: TObject);
  52.     procedure Paste1Click(Sender: TObject);
  53.     procedure Selectall1Click(Sender: TObject);
  54.     procedure Delete1Click(Sender: TObject);
  55.     procedure Edit1Click(Sender: TObject);
  56.     procedure Saveas1Click(Sender: TObject);
  57.     procedure Save1Click(Sender: TObject);
  58.     procedure Font1Click(Sender: TObject);
  59.     procedure Close1Click(Sender: TObject);
  60.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  61.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  62.     procedure FormCreate(Sender: TObject);
  63.     procedure Printersetup1Click(Sender: TObject);
  64.     procedure Print1Click(Sender: TObject);
  65.     procedure Open1Click(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.     PathName: string;
  69. {$IFDEF CLR}
  70.         procedure InitializeControls;
  71. {$ENDIF}
  72.   public
  73.     { Public declarations }
  74.     procedure Open(const AFileName: string);
  75. {$IFDEF CLR}
  76.         constructor Create(AOwner: TComponent); override;
  77. {$ENDIF}
  78.   end;
  79.  
  80. var
  81.   EditForm: TEditForm;
  82.  
  83. const
  84.   DefaultFileName = 'Untitled';
  85.  
  86. implementation
  87.  
  88. uses
  89.      Clipbrd, Printers, MDIFrame;
  90.  
  91.  
  92. procedure TEditForm.Exit1Click(Sender: TObject);
  93. begin
  94.   FrameForm.Exit1Click(Sender);
  95. end;
  96.  
  97. procedure TEditForm.New1Click(Sender: TObject);
  98. begin
  99.   FrameForm.New1Click(Sender);
  100. end;
  101.  
  102. procedure TEditForm.Open1Click(Sender: TObject);
  103. begin
  104.   FrameForm.Open1Click(Sender);
  105. end;
  106.  
  107. procedure TEditForm.AlignClick(Sender: TObject);
  108. begin
  109.   Left1.Checked := False;
  110.   Right1.Checked := False;
  111.   Center1.Checked := False;
  112.   with Sender as TMenuItem do Checked := True;
  113.   with Editor.Paragraph do
  114.     if Left1.Checked then
  115.       Alignment := taLeftJustify
  116.     else if Right1.Checked then
  117.       Alignment := taRightJustify
  118.     else if Center1.Checked then
  119.       Alignment := taCenter;
  120. end;
  121.  
  122. procedure TEditForm.Wordwrap1Click(Sender: TObject);
  123. begin
  124.   with Editor do
  125.   begin
  126.     WordWrap := not WordWrap; { toggle word wrapping }
  127.     if WordWrap then
  128.       ScrollBars := ssVertical
  129.     else
  130.       ScrollBars := ssBoth;
  131.     WordWrap1.Checked := WordWrap; { set menu item check }
  132.   end;
  133. end;
  134.  
  135. procedure TEditForm.Cut1Click(Sender: TObject);
  136. begin
  137.   Editor.CutToClipboard;
  138. end;
  139.  
  140. procedure TEditForm.Copy1Click(Sender: TObject);
  141. begin
  142.   Editor.CopyToClipboard;
  143. end;
  144.  
  145. procedure TEditForm.Paste1Click(Sender: TObject);
  146. begin
  147.   Editor.PasteFromClipboard;
  148. end;
  149.  
  150. procedure TEditForm.Selectall1Click(Sender: TObject);
  151. begin
  152.   Editor.SelectAll;
  153. end;
  154.  
  155. procedure TEditForm.Delete1Click(Sender: TObject);
  156. begin
  157.   Editor.ClearSelection;
  158. end;
  159.  
  160. procedure TEditForm.Edit1Click(Sender: TObject);
  161. var
  162.   HasSelection: Boolean;
  163. begin
  164.   Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);
  165.   Paste2.Enabled := Paste1.Enabled;
  166.   HasSelection := Editor.SelLength > 0;
  167.   Cut1.Enabled := HasSelection;
  168.   Cut2.Enabled := HasSelection;
  169.   Copy1.Enabled := HasSelection;
  170.   Copy2.Enabled := HasSelection;
  171.   Delete1.Enabled := HasSelection;
  172. end;
  173.  
  174. procedure TEditForm.Open(const AFileName: string);
  175. begin
  176.   PathName := AFileName;
  177.   Caption := ExtractFileName(AFileName);
  178.   with Editor do
  179.   begin
  180.     Lines.LoadFromFile(PathName);
  181.     SelStart := 0;
  182.     Modified := False;
  183.   end;
  184. end;
  185.  
  186. procedure TEditForm.Saveas1Click(Sender: TObject);
  187. begin
  188.   SaveFileDialog.FileName := PathName;
  189.   if SaveFileDialog.Execute then
  190.   begin
  191.     PathName := SaveFileDialog.FileName;
  192.     Caption := ExtractFileName(PathName);
  193.     Save1Click(Sender);
  194.   end;
  195. end;
  196.  
  197. procedure TEditForm.Save1Click(Sender: TObject);
  198. begin
  199.   if PathName = DefaultFileName then
  200.     SaveAs1Click(Sender)
  201.   else
  202.   begin
  203.     Editor.Lines.SaveToFile(PathName);
  204.     Editor.Modified := False;
  205.   end;
  206. end;
  207.  
  208. procedure TEditForm.Font1Click(Sender: TObject);
  209. begin
  210.   FontDialog1.Font := Editor.Font;
  211.   if FontDialog1.Execute then
  212.     Editor.SelAttributes.Assign(FontDialog1.Font);
  213. end;
  214.  
  215. procedure TEditForm.Close1Click(Sender: TObject);
  216. begin
  217.   Close;
  218. end;
  219.  
  220. procedure TEditForm.FormClose(Sender: TObject; var Action: TCloseAction);
  221. begin
  222.   Action := caFree;
  223. end;
  224.  
  225. procedure TEditForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  226. const
  227.   SWarningText = 'Save changes to %s?';
  228. begin
  229.   if Editor.Modified then
  230.   begin
  231.     case MessageDlg(Format(SWarningText, [PathName]), mtConfirmation,
  232.       [mbYes, mbNo, mbCancel], 0) of
  233.       idYes: Save1Click(Self);
  234.       idCancel: CanClose := False;
  235.     end;
  236.   end;
  237. end;
  238.  
  239. procedure TEditForm.FormCreate(Sender: TObject);
  240. begin
  241.   PathName := DefaultFileName;
  242. end;
  243.  
  244. procedure TEditForm.Printersetup1Click(Sender: TObject);
  245. begin
  246.   PrinterSetupDialog1.Execute;
  247. end;
  248.  
  249. procedure TEditForm.Print1Click(Sender: TObject);
  250. begin
  251.   if PrintDialog1.Execute then
  252.     Editor.Print(PathName);
  253. end;
  254.  
  255. {$IFDEF CLR}
  256. constructor TEditForm.Create(AOwner: TComponent);
  257. begin
  258.     inherited CreateNew(AOwner);
  259.     InitializeControls;
  260. end;
  261. {$ENDIF}
  262. {$IFDEF CLR}
  263. procedure TEditForm.InitializeControls;
  264. begin
  265.   // Initalizing all controls...
  266.     Editor:= TRichEdit.Create(Self);
  267.     MainMenu1:= TMainMenu.Create(Self);
  268.     File1:= TMenuItem.Create(Self);
  269.     New1:= TMenuItem.Create(Self);
  270.     Open1:= TMenuItem.Create(Self);
  271.     Close1:= TMenuItem.Create(Self);
  272.     Save1:= TMenuItem.Create(Self);
  273.     Saveas1:= TMenuItem.Create(Self);
  274.     Print1:= TMenuItem.Create(Self);
  275.     Printersetup1:= TMenuItem.Create(Self);
  276.     N2:= TMenuItem.Create(Self);
  277.     Exit1:= TMenuItem.Create(Self);
  278.     Edit1:= TMenuItem.Create(Self);
  279.     Cut1:= TMenuItem.Create(Self);
  280.     Copy1:= TMenuItem.Create(Self);
  281.     Paste1:= TMenuItem.Create(Self);
  282.     Delete1:= TMenuItem.Create(Self);
  283.     N3:= TMenuItem.Create(Self);
  284.     Selectall1:= TMenuItem.Create(Self);
  285.     Character1:= TMenuItem.Create(Self);
  286.     Left1:= TMenuItem.Create(Self);
  287.     Right1:= TMenuItem.Create(Self);
  288.     Center1:= TMenuItem.Create(Self);
  289.     N4:= TMenuItem.Create(Self);
  290.     Wordwrap1:= TMenuItem.Create(Self);
  291.     N5:= TMenuItem.Create(Self);
  292.     Font1:= TMenuItem.Create(Self);
  293.     PopupMenu1:= TPopupMenu.Create(Self);
  294.     Cut2:= TMenuItem.Create(Self);
  295.     Copy2:= TMenuItem.Create(Self);
  296.     Paste2:= TMenuItem.Create(Self);
  297.     SaveFileDialog:= TSaveDialog.Create(Self);
  298.     FontDialog1:= TFontDialog.Create(Self);
  299.     PrinterSetupDialog1:= TPrinterSetupDialog.Create(Self);
  300.     PrintDialog1:= TPrintDialog.Create(Self);
  301.     
  302.     with Editor do
  303.     begin
  304.         Parent:= Self;
  305.         Left:= 0;
  306.         Top:= 0;
  307.         Width:= 427;
  308.         Height:= 254;
  309.         Align:= alClient;
  310.         TabOrder:= 0;
  311.     end;
  312.     
  313.     with MainMenu1 do
  314.     begin
  315.         Parent:= Self;
  316.     end;
  317.     
  318.     with File1 do
  319.     begin
  320.         MainMenu1.Items.Add(File1);
  321.         Caption:= '&File';
  322.     end;
  323.     
  324.     with New1 do
  325.     begin
  326.         File1.Add(New1);
  327.         Caption:= '&New';
  328.         OnClick:= New1Click;
  329.     end;
  330.     
  331.     with Open1 do
  332.     begin
  333.         File1.Add(Open1);
  334.         Caption:= '&Open...';
  335.         OnClick:= Open1Click;
  336.     end;
  337.     
  338.     with Close1 do
  339.     begin
  340.         File1.Add(Close1);
  341.         Caption:= '&Close';
  342.         OnClick:= Close1Click;
  343.     end;
  344.     
  345.     with Save1 do
  346.     begin
  347.         File1.Add(Save1);
  348.         Caption:= '&Save';
  349.         OnClick:= Save1Click;
  350.     end;
  351.     
  352.     with Saveas1 do
  353.     begin
  354.         File1.Add(Saveas1);
  355.         Caption:= 'Save &as...';
  356.         OnClick:= Saveas1Click;
  357.     end;
  358.     
  359.     with Print1 do
  360.     begin
  361.         File1.Add(Print1);
  362.         Caption:= '&Print';
  363.         OnClick:= Print1Click;
  364.     end;
  365.     
  366.     with Printersetup1 do
  367.     begin
  368.         File1.Add(Printersetup1);
  369.         Caption:= 'Printer setup...';
  370.         OnClick:= Printersetup1Click;
  371.     end;
  372.     
  373.     with N2 do
  374.     begin
  375.         File1.Add(N2);
  376.         Caption:= '-';
  377.     end;
  378.     
  379.     with Exit1 do
  380.     begin
  381.         File1.Add(Exit1);
  382.         Caption:= 'E&xit';
  383.         OnClick:= Exit1Click;
  384.     end;
  385.     
  386.     with Edit1 do
  387.     begin
  388.         MainMenu1.Items.Add(Edit1);
  389.         Caption:= '&Edit';
  390.         GroupIndex:= 1;
  391.         OnClick:= Edit1Click;
  392.     end;
  393.     
  394.     with Cut1 do
  395.     begin
  396.         Edit1.Add(Cut1);
  397.         Caption:= 'Cu&t';
  398.         ShortCut:= 16472;
  399.         OnClick:= Cut1Click;
  400.     end;
  401.     
  402.     with Copy1 do
  403.     begin
  404.         Edit1.Add(Copy1);
  405.         Caption:= '&Copy';
  406.         ShortCut:= 16451;
  407.         OnClick:= Copy1Click;
  408.     end;
  409.     
  410.     with Paste1 do
  411.     begin
  412.         Edit1.Add(Paste1);
  413.         Caption:= '&Paste';
  414.         ShortCut:= 16470;
  415.         OnClick:= Paste1Click;
  416.     end;
  417.     
  418.     with Delete1 do
  419.     begin
  420.         Edit1.Add(Delete1);
  421.         Caption:= 'De&lete';
  422.         ShortCut:= 16452;
  423.         OnClick:= Delete1Click;
  424.     end;
  425.     
  426.     with N3 do
  427.     begin
  428.         Edit1.Add(N3);
  429.         Caption:= '-';
  430.     end;
  431.     
  432.     with Selectall1 do
  433.     begin
  434.         Edit1.Add(Selectall1);
  435.         Caption:= 'Select &all';
  436.         ShortCut:= 16449;
  437.         OnClick:= Selectall1Click;
  438.     end;
  439.     
  440.     with Character1 do
  441.     begin
  442.         MainMenu1.Items.Add(Character1);
  443.         Caption:= '&Character';
  444.         GroupIndex:= 1;
  445.     end;
  446.     
  447.     with Left1 do
  448.     begin
  449.         Character1.Add(Left1);
  450.         Caption:= '&Left';
  451.         Checked:= True;
  452.         OnClick:= AlignClick;
  453.     end;
  454.     
  455.     with Right1 do
  456.     begin
  457.         Character1.Add(Right1);
  458.         Caption:= '&Right';
  459.         OnClick:= AlignClick;
  460.     end;
  461.     
  462.     with Center1 do
  463.     begin
  464.         Character1.Add(Center1);
  465.         Caption:= '&Center';
  466.         OnClick:= AlignClick;
  467.     end;
  468.     
  469.     with N4 do
  470.     begin
  471.         Character1.Add(N4);
  472.         Caption:= '-';
  473.     end;
  474.     
  475.     with Wordwrap1 do
  476.     begin
  477.         Character1.Add(Wordwrap1);
  478.         Caption:= '&Word wrap';
  479.         Checked:= True;
  480.         OnClick:= Wordwrap1Click;
  481.     end;
  482.     
  483.     with N5 do
  484.     begin
  485.         Character1.Add(N5);
  486.         Caption:= '-';
  487.     end;
  488.     
  489.     with Font1 do
  490.     begin
  491.         Character1.Add(Font1);
  492.         Caption:= '&Font...';
  493.         OnClick:= Font1Click;
  494.     end;
  495.     
  496.     with PopupMenu1 do
  497.     begin
  498.         Parent:= Self;
  499.         OnPopup:= Edit1Click;
  500.     end;
  501.     
  502.     with Cut2 do
  503.     begin
  504.         PopupMenu1.Items.Add(Cut2);
  505.         Caption:= 'Cu&t';
  506.         OnClick:= Cut1Click;
  507.     end;
  508.     
  509.     with Copy2 do
  510.     begin
  511.         PopupMenu1.Items.Add(Copy2);
  512.         Caption:= '&Copy';
  513.         OnClick:= Copy1Click;
  514.     end;
  515.     
  516.     with Paste2 do
  517.     begin
  518.         PopupMenu1.Items.Add(Paste2);
  519.         Caption:= '&Paste';
  520.         OnClick:= Paste1Click;
  521.     end;
  522.     
  523.     with SaveFileDialog do
  524.     begin
  525.         Parent:= Self;
  526.         Filter:=  'Rich text files (*.rtf)|*.rtf|Plain text files (*.txt)|*.txt|All' +
  527.           ' files|*.*';
  528.         Options:= [ofHideReadOnly, ofFileMustExist, ofNoReadOnlyReturn];
  529.     end;
  530.     
  531.     with FontDialog1 do
  532.     begin
  533.         Parent:= Self;
  534.         Font.Charset:= DEFAULT_CHARSET;
  535.         Font.Color:= clWindowText;
  536.         Font.Height:= -11;
  537.         Font.Name:= 'MS Sans Serif';
  538.         Font.Style:= [];
  539.     end;
  540.     
  541.     with PrinterSetupDialog1 do
  542.     begin
  543.         Parent:= Self;
  544.         Left:= 208;
  545.         Top:= 24;
  546.     end;
  547.     
  548.     with PrintDialog1 do
  549.     begin
  550.         Parent:= Self;
  551.     end;
  552.  
  553.     // Form's PMEs'
  554.     Left:= 608;
  555.     Top:= 451;
  556.     Width:= 435;
  557.     Height:= 308;
  558.     Caption:= 'Untitled';
  559.     Color:= clBtnFace;
  560.     Font.Charset:= DEFAULT_CHARSET;
  561.     Font.Color:= clWindowText;
  562.     Font.Height:= -11;
  563.     Font.Name:= 'MS Sans Serif';
  564.     Font.Style:= [];
  565.     FormStyle:= fsMDIChild;
  566.     Menu:= MainMenu1;
  567.     PopupMenu:= PopupMenu1;
  568.     Position:= poDefault;
  569.     Visible:= True;
  570.     OnClose:= FormClose;
  571.     OnCloseQuery:= FormCloseQuery;
  572.     OnCreate:= FormCreate;
  573. end;
  574. {$ENDIF}
  575. end.
  576.